#include <python3.6m/Python.h>
#include <iostream>

using namespace std;

int main()
{

    Py_Initialize();//使用python之前，要调用Py_Initialize();这个函数进行初始化
    if (!Py_IsInitialized())
    {
        cout << "初始化失败！" << endl;
        return 0;
    }

    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('../python/')");//这一步很重要，修改Python路径
    PyRun_SimpleString("print(sys.path)");

    PyObject * pModule = NULL;//声明变量
    PyObject * pFunc = NULL;// 声明变量

    pModule = PyImport_ImportModule("pythonTest");//这里是要调用的文件名hello.py
    if (pModule == NULL)
    {
        cout << "没找到" << endl;
    }


    pFunc = PyObject_GetAttrString(pModule, "add");//这里是要调用的函数名
    if(pFunc == NULL){
      cout << "null ret" << endl;
      return -1;
    }
    PyObject *pArgs = PyTuple_New(2);
    PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 1));//0—序号 i表示创建int型变量
    PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", 2));

    
    PyObject* pRet = PyObject_CallObject(pFunc, pArgs);//调用函数

    int res = 0;
    int res1 = 0;
    PyArg_Parse(pRet, "(ii)", &res, &res1);//转换返回类型

    cout << "res:" << res << endl;//输出结果

    pFunc = PyObject_GetAttrString(pModule, "hello");
    pRet = PyObject_CallObject(pFunc, nullptr);


    Py_Finalize();//调用Py_Finalize，这个根Py_Initialize相对应的。

    return 0;
}
